package com.itheima.d5_polymorphic.demo2;

//目标：了解多态中成员的访问特点
public class Demo {
    public static void main(String[] args) {
        /**
         * 多态中成员访问特点：
         *      变量调用：编译看左边，运行也看左边
         *      方法调用：编译看左边，运行看右边
         *
         * 需求：有父类fu和子类Zi，请使用多态的形式创建对象并访问各自属性和方法
         */
        //1.多态的前提已经满足了继承、方法重写，就差父类引用指向子类对象！
        Fu zi = new Zi();

        //2.访问变量：编译看左边，运行也看左边
        //运行看左边，说的是运行的时候拿到的数据是左边父类中变量的数据！
        System.out.println(zi.field);
        //编译看左边，说的是编译阶段，看左边父类类型是否有该变量，没有就会报错！
        //System.out.println(zi.ziField);
        System.out.println("------------");

        //3.调用方法：编译看左边，运行看右边
        //运行看右边，说的是运行时，真正调用的是右边子类的方法！（满足之前讲的就近原则！）
        zi.method();
        //编译看左边，说的是编译阶段，看左边父类类型是否有该方法，没有就会报错！
        //zi.ziMethod();w
    }
}

